<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LibTools: H:/project/LibTools/src/socket/SockTools.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LibTools
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.16 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','搜索');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_9ad1227260954e346101f3844f0abb3d.html">socket</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">SockTools.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_sock_tools_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef __SOCKTOOLS_H__</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define __SOCKTOOLS_H__</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_sock_error_8h.html">SockError.h</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_socket_def_8h.html">SocketDef.h</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#ifdef LINUX</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#   include &lt;sys/un.h&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160; </div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<a class="code" href="tools_8h.html#a201ce692c9dca6599e5c12d00167419b">DEF_BEG_LIBTOOLS</a></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#ac7875a7f6984241a06892f7041b4d30a">   19</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a6a2b55a6391419ed0b7b9da06e094b4b">INT64</a> <a class="code" href="_sock_tools_8h.html#ac7875a7f6984241a06892f7041b4d30a">SOCKIDEN</a>;</div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#ad5e706c22565ef38bcf6421cc05c3514">   20</a></span>&#160;<span class="preprocessor">#define SOCKIDEN_ZERO 0</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a74bad9070f3dc35adaec8fa382504102">   22</a></span>&#160;<span class="keyword">class </span><a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="_sock_tools_8h.html#a74bad9070f3dc35adaec8fa382504102">CTcpServiceBase</a>;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#aec76601dfa14e47047b7540fd719b0fa">   23</a></span>&#160;<span class="keyword">class </span><a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="class_c_socket.html">CSocket</a>;</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#ifdef WIN32</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">struct </span>sockaddr_un</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> sun_family;                   <span class="comment">/* AF_UNIX */</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    <span class="keywordtype">char</span>  sun_path[256];                <span class="comment">/* Pathname */</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;};</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a23c9ed857354ad531dd0484d638a6224">   33</a></span>&#160;<span class="keyword">typedef</span> sockaddr_un <a class="code" href="_sock_tools_8h.html#a23c9ed857354ad531dd0484d638a6224">SOCKADDR_UN</a>;</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_c_sock_addr.html">   43</a></span>&#160;<span class="keyword">class </span><a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="class_c_sock_addr.html">CSockAddr</a></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;{</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>(<a class="code" href="namespace_s_o_c_k_f_a_m_i_l_y.html#a2752d06098f227dbd8340b30a718da81">SOCKFAMILY::SockFamily</a> domain, <span class="keyword">const</span> <span class="keywordtype">char</span>* addr, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> port);</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>(<span class="keyword">const</span> <a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; addr);</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>(sockaddr* sockaddr, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    ~<a class="code" href="class_c_sock_addr.html">CSockAddr</a>();</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#ifdef STD11</span></div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>(<a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp;&amp; addr);</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; operator= (<a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp;&amp; addr);</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; operator= (<span class="keyword">const</span> <a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; addr);</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordtype">void</span> Swap(<a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; addr);</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordtype">void</span> Clear();</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keywordtype">bool</span> SetSockAddr(<a class="code" href="tools_8h.html#afdd49e476b36e84a9d6d171110e79940">SOCKADDR</a>* sockaddr, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordtype">void</span> SetDomain(<a class="code" href="namespace_s_o_c_k_f_a_m_i_l_y.html#a2752d06098f227dbd8340b30a718da81">SOCKFAMILY::SockFamily</a> domain);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordtype">bool</span> SetAddr(<span class="keyword">const</span> <span class="keywordtype">char</span>* addr);</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordtype">bool</span> SetPort(<a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> port);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="namespace_s_o_c_k_f_a_m_i_l_y.html#a2752d06098f227dbd8340b30a718da81">SOCKFAMILY::SockFamily</a> GetDomain() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* GetAddr(std::string&amp; addr) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> GetPort() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="tools_8h.html#afdd49e476b36e84a9d6d171110e79940">SOCKADDR</a>* GetSockAddr() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordtype">size_t</span> GetSize() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="keywordtype">size_t</span> GetSizeByDomain() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="class_c_sock_addr.html#a24246447eef2dad29eab779f8e2a5e75">  137</a></span>&#160;    <span class="keywordtype">char</span> *<a class="code" href="class_c_sock_addr.html#a24246447eef2dad29eab779f8e2a5e75">_addr</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_c_sock_addr.html#a3ce3c1d797183bcffe8898ad77249c1e">  138</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="class_c_sock_addr.html#a3ce3c1d797183bcffe8898ad77249c1e">_size</a>;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;};</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="_sock_tools_8h.html#aab6ce5ae338e36d66137b8d9ed1ccfa1">HostByteOrder</a>();</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<a class="code" href="class_c_sock_error.html">CSockError</a> <a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="_sock_tools_8h.html#a486e36ffbc5ef3ed2987d4c9e9d9baa4">Bind</a>(<a class="code" href="class_c_socket.html">CSocket</a>&amp; sock, <span class="keyword">const</span> <span class="keywordtype">char</span>* szAddr = <a class="code" href="tools_8h.html#ab689500aaec0db066e3ac9483d3fe425">NullPtr</a>, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> port = -1);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160; </div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<a class="code" href="class_c_sock_error.html">CSockError</a> <a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="_sock_tools_8h.html#a7baacf6ef43d9043036035ba63294125">Listen</a>(<a class="code" href="class_c_socket.html">CSocket</a>&amp; sock, <span class="keywordtype">int</span> backlog = SOMAXCONN);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<a class="code" href="class_c_sock_error.html">CSockError</a> <a class="code" href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a> <a class="code" href="_sock_tools_8h.html#a3566b83d923c77ab474018f53eb243fc">GetSockName</a>(<span class="keyword">const</span> <a class="code" href="class_c_socket.html">CSocket</a>&amp; sock, <a class="code" href="class_c_sock_addr.html">CSockAddr</a>&amp; addr);</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">// 监听函数回调指针</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#afe2675c066a09f87a630836c5f721e40">  181</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a>(*<a class="code" href="_sock_tools_8h.html#afe2675c066a09f87a630836c5f721e40">lpAcceptCompleteFunc</a>) (<a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="comment">// 连接回调函数指针</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a55967058a645eade8301ded4163b1c0f">  183</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a>(*<a class="code" href="_sock_tools_8h.html#a55967058a645eade8301ded4163b1c0f">lpConnectCompleteFunc</a>) (<a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker);</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="comment">// 读写回调函数</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a099fed87c933c9ed28f3889db6adbfe5">  185</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a>(*<a class="code" href="_sock_tools_8h.html#a099fed87c933c9ed28f3889db6adbfe5">lpWRCompleteFunc</a>) (<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker);</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="comment">// 超时回调函数</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a65db86524d66ff5c871579e2dacf12ca">  187</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a>(*<a class="code" href="_sock_tools_8h.html#a65db86524d66ff5c871579e2dacf12ca">lpTimeoutCompleteFunc</a>) (<a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker);</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">// 关闭成功的回调函数</span></div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="comment">//typedef DWORD(*lpCloseCompleteFunc) (CSockError ec, void* invoker);</span></div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="comment">// 投递中断请求的回调函数</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a19358efe08e40c8fe899cbec837c5d87">  191</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a>(*<a class="code" href="_sock_tools_8h.html#a19358efe08e40c8fe899cbec837c5d87">lpPostCompleteFunc</a>) (<span class="keywordtype">void</span>* invoker);</div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_handle_base.html">  198</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;{</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_handle_base.html#a32ac8e1d547a0eb3a03d2ddfcebfac40">  201</a></span>&#160;    <a class="code" href="class_handle_base.html#a32ac8e1d547a0eb3a03d2ddfcebfac40">HandleBase</a>() {}</div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="class_handle_base.html#a676df92072609ebf6fea8483d4e5c498">  202</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="class_handle_base.html#a676df92072609ebf6fea8483d4e5c498">~HandleBase</a>() {}</div>
<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">  203</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>() { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="class_handle_base.html#af46cdeb9ada0179336b0b051fd4b5f6a">  204</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">void</span>* invoker) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(); }</div>
<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="class_handle_base.html#ad4dbe33d434f2210fcbf15ccad5d7684">  205</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<a class="code" href="class_c_sock_error.html">CSockError</a> ec) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="class_handle_base.html#aa02c639a395c5c445f943d4a56f90afa">  206</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(ec); }</div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="class_handle_base.html#a2b4f7dd4548d633598efef07b27ee98c">  207</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_error.html">CSockError</a> ec) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_handle_base.html#a19fc5b25c69d862d52e7818caa7d6ce5">  208</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(data, dwSize, ec); }</div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="class_handle_base.html#a4042bdeacafe5d6a70d0492e11942d94">  209</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_addr.html">CSockAddr</a>* addr, <a class="code" href="class_c_sock_error.html">CSockError</a> ec) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="class_handle_base.html#a7356c7173b55d10a80da6d058c74cc53">  210</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_addr.html">CSockAddr</a>* addr, <a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(data, dwSize, addr, ec); }</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_handle_base.html#ad1d7535ef23543cd2e76c1653aeb90c8">IsNullUserPtr</a>() = 0;</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;};</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html">  215</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_c_t_handle.html">ACTHandle</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;{</div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html#aa514722b590d01cdfc240f17a700ea28">  217</a></span>&#160;    Func <a class="code" href="class_a_c_t_handle.html#aa514722b590d01cdfc240f17a700ea28">_handle</a>;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html#a3fd60c7ec61d15a6ca1fbe94c20fd12d">  219</a></span>&#160;    <a class="code" href="class_a_c_t_handle.html#a3fd60c7ec61d15a6ca1fbe94c20fd12d">ACTHandle</a>() {}</div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html#a839b7bb42177818149e4233221b22d2e">  220</a></span>&#160;    <a class="code" href="class_a_c_t_handle.html#a839b7bb42177818149e4233221b22d2e">ACTHandle</a>(Func func) :<a class="code" href="class_a_c_t_handle.html#aa514722b590d01cdfc240f17a700ea28">_handle</a>(func) {}</div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html#a93761e65ba35de5b4ce7b7226841ca83">  221</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) {</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_a_c_t_handle.html#aa514722b590d01cdfc240f17a700ea28">_handle</a>(ec, invoker);</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    }</div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="class_a_c_t_handle.html#a52c5b24205b8b3c0e07285560eda1e12">  224</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_a_c_t_handle.html#a52c5b24205b8b3c0e07285560eda1e12">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;};</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html">  228</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_c_t_handle_null.html">ACTHandleNull</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;{</div>
<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html#aaf8dd153ee1d4cbc35c327c4f987cfeb">  230</a></span>&#160;    Func <a class="code" href="class_a_c_t_handle_null.html#aaf8dd153ee1d4cbc35c327c4f987cfeb">_handle</a>;</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html#a5ae70a94f931c07e9476653f59313fb0">  232</a></span>&#160;    <a class="code" href="class_a_c_t_handle_null.html#a5ae70a94f931c07e9476653f59313fb0">ACTHandleNull</a>() {}</div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html#aa249a078d00ba1dfd11499e9160d4fda">  233</a></span>&#160;    <a class="code" href="class_a_c_t_handle_null.html#aa249a078d00ba1dfd11499e9160d4fda">ACTHandleNull</a>(Func func) :<a class="code" href="class_a_c_t_handle_null.html#aaf8dd153ee1d4cbc35c327c4f987cfeb">_handle</a>(func) {}</div>
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html#a7195ca06a5f271cf21d423e4f7627c8d">  234</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<a class="code" href="class_c_sock_error.html">CSockError</a> ec) {</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_a_c_t_handle_null.html#aaf8dd153ee1d4cbc35c327c4f987cfeb">_handle</a>(ec);</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    }</div>
<div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="class_a_c_t_handle_null.html#aa089f429ccdda73074ab2444fea8100b">  237</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_a_c_t_handle_null.html#aa089f429ccdda73074ab2444fea8100b">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;};</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="class_post_handle.html">  242</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_post_handle.html">PostHandle</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;{</div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="class_post_handle.html#ab3189131ee766878c26e84fe2e34fcb7">  244</a></span>&#160;    Func <a class="code" href="class_post_handle.html#ab3189131ee766878c26e84fe2e34fcb7">_handle</a>;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_post_handle.html#a74b0d5c53bcd9c85cc1422d74eac8e4a">  246</a></span>&#160;    <a class="code" href="class_post_handle.html#a74b0d5c53bcd9c85cc1422d74eac8e4a">PostHandle</a>() {}</div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="class_post_handle.html#a54689e5016c3c30895269007737475b9">  247</a></span>&#160;    <a class="code" href="class_post_handle.html#a54689e5016c3c30895269007737475b9">PostHandle</a>(Func func) :<a class="code" href="class_post_handle.html#ab3189131ee766878c26e84fe2e34fcb7">_handle</a>(func) {}</div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="class_post_handle.html#aac12fa0471bfc1b16c117c8ba76a6a3e">  248</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">void</span>* invoker) {</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_post_handle.html#ab3189131ee766878c26e84fe2e34fcb7">_handle</a>(invoker);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    }</div>
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="class_post_handle.html#a72490a37adbd17482384be0262024217">  251</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_post_handle.html#a72490a37adbd17482384be0262024217">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;};</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="class_post_handle_null.html">  255</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_post_handle_null.html">PostHandleNull</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;{</div>
<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="class_post_handle_null.html#a11022e1697622f60a0b066d05faec075">  257</a></span>&#160;    Func <a class="code" href="class_post_handle_null.html#a11022e1697622f60a0b066d05faec075">_handle</a>;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="class_post_handle_null.html#abb48007bf0ca9906fbc4b0a8341164e8">  259</a></span>&#160;    <a class="code" href="class_post_handle_null.html#abb48007bf0ca9906fbc4b0a8341164e8">PostHandleNull</a>() {}</div>
<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="class_post_handle_null.html#abb93e157de5b82956a65c34d9b444f98">  260</a></span>&#160;    <a class="code" href="class_post_handle_null.html#abb93e157de5b82956a65c34d9b444f98">PostHandleNull</a>(Func func) :<a class="code" href="class_post_handle_null.html#a11022e1697622f60a0b066d05faec075">_handle</a>(func) {}</div>
<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="class_post_handle_null.html#a0f2860548a7ca7db00b4a11c82ab3cab">  261</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_post_handle_null.html#a0f2860548a7ca7db00b4a11c82ab3cab">operator() </a>() {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_post_handle_null.html#a11022e1697622f60a0b066d05faec075">_handle</a>();</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    }</div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_post_handle_null.html#a5b4449ffcdd56de9bcd090e152aa943d">  264</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_post_handle_null.html#a5b4449ffcdd56de9bcd090e152aa943d">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;};</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160; </div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="class_w_r_handle.html">  272</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_r_handle.html">WRHandle</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;{</div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="class_w_r_handle.html#a238dc68b18181b941e21d9c608fe5c6f">  274</a></span>&#160;    Func <a class="code" href="class_w_r_handle.html#a238dc68b18181b941e21d9c608fe5c6f">_handle</a>;</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="class_w_r_handle.html#aa1780ec5d66f6e3ea32714a0dcf307e2">  276</a></span>&#160;    <a class="code" href="class_w_r_handle.html#aa1780ec5d66f6e3ea32714a0dcf307e2">WRHandle</a>() {}</div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="class_w_r_handle.html#a130f06b9629816c74dede292184ff5e4">  277</a></span>&#160;    <a class="code" href="class_w_r_handle.html#a130f06b9629816c74dede292184ff5e4">WRHandle</a>(Func func) :<a class="code" href="class_w_r_handle.html#a238dc68b18181b941e21d9c608fe5c6f">_handle</a>(func) {}</div>
<div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="class_w_r_handle.html#a273ede4b637254e69410336f935a4c86">  278</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) {</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_w_r_handle.html#a238dc68b18181b941e21d9c608fe5c6f">_handle</a>(data, dwSize, ec, invoker);</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    }</div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="class_w_r_handle.html#a8d80555d829aef60b954789c83bae8fc">  281</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_w_r_handle.html#a8d80555d829aef60b954789c83bae8fc">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;};</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html">  284</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_r_handle_null.html">WRHandleNull</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;{</div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html#a53e2d4027035f3775511148616922cd2">  286</a></span>&#160;    Func <a class="code" href="class_w_r_handle_null.html#a53e2d4027035f3775511148616922cd2">_handle</a>;</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html#a205548c98aa00bb18d8a21306bc7ff8f">  288</a></span>&#160;    <a class="code" href="class_w_r_handle_null.html#a205548c98aa00bb18d8a21306bc7ff8f">WRHandleNull</a>() {}</div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html#aa846a077d452c1c7fe323ee9039acc82">  289</a></span>&#160;    <a class="code" href="class_w_r_handle_null.html#aa846a077d452c1c7fe323ee9039acc82">WRHandleNull</a>(Func func) :<a class="code" href="class_w_r_handle_null.html#a53e2d4027035f3775511148616922cd2">_handle</a>(func) {}</div>
<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html#a7814a6c93eb6c11e4f42ad69475a498a">  290</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_error.html">CSockError</a> ec) {</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_w_r_handle_null.html#a53e2d4027035f3775511148616922cd2">_handle</a>(data, dwSize, ec);</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    }</div>
<div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="class_w_r_handle_null.html#a139e5b11e76a4214c2bf7cb85b6a4406">  293</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_w_r_handle_null.html#a139e5b11e76a4214c2bf7cb85b6a4406">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;};</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html">  302</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_r_addr_handle.html">WRAddrHandle</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;{</div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html#a0ce438ae9c21fd43fabae8030ef00e48">  304</a></span>&#160;    Func <a class="code" href="class_w_r_addr_handle.html#a0ce438ae9c21fd43fabae8030ef00e48">_handle</a>;</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html#ae918d94905bcf0d67f30730d62d68257">  306</a></span>&#160;    <a class="code" href="class_w_r_addr_handle.html#ae918d94905bcf0d67f30730d62d68257">WRAddrHandle</a>() {}</div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html#a19f212183b5907948756a92f6e3363e0">  307</a></span>&#160;    <a class="code" href="class_w_r_addr_handle.html#a19f212183b5907948756a92f6e3363e0">WRAddrHandle</a>(Func func) :<a class="code" href="class_w_r_addr_handle.html#a0ce438ae9c21fd43fabae8030ef00e48">_handle</a>(func) {}</div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html#a9388d6cac064906361e62467e240c5b6">  308</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_addr.html">CSockAddr</a>* addr, <a class="code" href="class_c_sock_error.html">CSockError</a> ec, <span class="keywordtype">void</span>* invoker) {</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_w_r_addr_handle.html#a0ce438ae9c21fd43fabae8030ef00e48">_handle</a>(data, dwSize, addr, ec, invoker);</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    }</div>
<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle.html#a80149636170dbb6bc6481af601e6a639">  311</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_w_r_addr_handle.html#a80149636170dbb6bc6481af601e6a639">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;};</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Func&gt;</div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html">  314</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_r_addr_handle_null.html">WRAddrHandleNull</a> :<span class="keyword">public</span> <a class="code" href="class_handle_base.html">HandleBase</a></div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;{</div>
<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html#a45a2cf65212c16a756b2eb42e2f0c9ee">  316</a></span>&#160;    Func <a class="code" href="class_w_r_addr_handle_null.html#a45a2cf65212c16a756b2eb42e2f0c9ee">_handle</a>;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html#a129acc18afe1e840d6d1dfa8f98c5c25">  318</a></span>&#160;    <a class="code" href="class_w_r_addr_handle_null.html#a129acc18afe1e840d6d1dfa8f98c5c25">WRAddrHandleNull</a>() {}</div>
<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html#a31d61baddaab7af808d2134c7a702f8e">  319</a></span>&#160;    <a class="code" href="class_w_r_addr_handle_null.html#a31d61baddaab7af808d2134c7a702f8e">WRAddrHandleNull</a>(Func func) :<a class="code" href="class_w_r_addr_handle_null.html#a45a2cf65212c16a756b2eb42e2f0c9ee">_handle</a>(func) {}</div>
<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html#a5ec9307ce4c85edd2d7e4c9eed208428">  320</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> <a class="code" href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">operator() </a>(<span class="keywordtype">char</span>* data, <a class="code" href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a> dwSize, <a class="code" href="class_c_sock_addr.html">CSockAddr</a>* addr, <a class="code" href="class_c_sock_error.html">CSockError</a> ec) {</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="class_w_r_addr_handle_null.html#a45a2cf65212c16a756b2eb42e2f0c9ee">_handle</a>(data, dwSize, addr, ec);</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    }</div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="class_w_r_addr_handle_null.html#a0ee535e2c8562b3643fe33fecb414ef7">  323</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_w_r_addr_handle_null.html#a0ee535e2c8562b3643fe33fecb414ef7">IsNullUserPtr</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;};</div>
<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a59cac0d926595c4ebd82cf829a49b4bf">  331</a></span>&#160;<span class="preprocessor">#define AcceptHandle ACTHandle</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a0d9fef77e2a00d63c4a5eb9d85b20144">  332</a></span>&#160;<span class="preprocessor">#define AcceptHandleNull ACTHandleNull</span></div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#aa7015b245ddc2e7d6eafc9e3c4cdde10">  339</a></span>&#160;<span class="preprocessor">#define ConnectHandle ACTHandle</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a2acb96bf6b526c449d82546b317d0833">  340</a></span>&#160;<span class="preprocessor">#define ConnectHandleNull ACTHandleNull</span></div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a48c0b32db2190fa1ef69ff765ce9047a">  347</a></span>&#160;<span class="preprocessor">#define TimeoutHandle ACTHandle</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a8f9f54d4280fff668917b64c28f05b21">  348</a></span>&#160;<span class="preprocessor">#define TimeoutHandleNull ACTHandleNull</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160; </div>
<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a98f727c835ef1e8dab91376ac6f77307">  355</a></span>&#160;<span class="preprocessor">#define WriteHandle WRHandle</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#ae34744d4c503b8497eccf3170c647ecf">  356</a></span>&#160;<span class="preprocessor">#define WriteHandleNull WRHandleNull</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a04df18cf2e31e3b90db6b32e80c6f9cb">  363</a></span>&#160;<span class="preprocessor">#define ReadHandle WRHandle</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a65fed703a397af3bcd8215cc6f627376">  364</a></span>&#160;<span class="preprocessor">#define ReadHandleNull WRHandleNull</span></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
<div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a0848656016aca1833c276f765003456c">  371</a></span>&#160;<span class="preprocessor">#define WriteAddrHandle WRAddrHandle</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a2667b68c3f52c29704ce1b76b2dc3570">  372</a></span>&#160;<span class="preprocessor">#define WriteAddrHandleNull WRAddrHandleNull</span></div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160; </div>
<div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a51429904e713674c3ab7b0474a452ea3">  379</a></span>&#160;<span class="preprocessor">#define ReadAddrHandle WRAddrHandle</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="_sock_tools_8h.html#a605103f80900756f0b8428b5227e9ab2">  380</a></span>&#160;<span class="preprocessor">#define ReadAddrHandleNull WRAddrHandleNull</span></div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<a class="code" href="tools_8h.html#ac909db71799bb22cb7d636a34cd785e4">DEF_END_LIBTOOLS</a></div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="preprocessor">#endif // __SOCKTOOLS_H__</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="a_sock_tools_8h_html_a7baacf6ef43d9043036035ba63294125"><div class="ttname"><a href="_sock_tools_8h.html#a7baacf6ef43d9043036035ba63294125">Listen</a></div><div class="ttdeci">CSockError LIBTOOLS Listen(CSocket &amp;sock, int backlog=SOMAXCONN)</div><div class="ttdoc">监听套接字</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8cpp_source.html#l00067">SockTools.cpp:67</a></div></div>
<div class="ttc" id="aclass_c_sock_error_html"><div class="ttname"><a href="class_c_sock_error.html">CSockError</a></div><div class="ttdoc">套接字错误信息类</div><div class="ttdef"><b>Definition:</b> <a href="_sock_error_8h_source.html#l00013">SockError.h:13</a></div></div>
<div class="ttc" id="aclass_handle_base_html_ad1d7535ef23543cd2e76c1653aeb90c8"><div class="ttname"><a href="class_handle_base.html#ad1d7535ef23543cd2e76c1653aeb90c8">HandleBase::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()=0</div></div>
<div class="ttc" id="aclass_w_r_addr_handle_null_html_a129acc18afe1e840d6d1dfa8f98c5c25"><div class="ttname"><a href="class_w_r_addr_handle_null.html#a129acc18afe1e840d6d1dfa8f98c5c25">WRAddrHandleNull::WRAddrHandleNull</a></div><div class="ttdeci">WRAddrHandleNull()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00318">SockTools.h:318</a></div></div>
<div class="ttc" id="aclass_post_handle_html_a54689e5016c3c30895269007737475b9"><div class="ttname"><a href="class_post_handle.html#a54689e5016c3c30895269007737475b9">PostHandle::PostHandle</a></div><div class="ttdeci">PostHandle(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00247">SockTools.h:247</a></div></div>
<div class="ttc" id="aclass_handle_base_html_a32ac8e1d547a0eb3a03d2ddfcebfac40"><div class="ttname"><a href="class_handle_base.html#a32ac8e1d547a0eb3a03d2ddfcebfac40">HandleBase::HandleBase</a></div><div class="ttdeci">HandleBase()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00201">SockTools.h:201</a></div></div>
<div class="ttc" id="aclass_handle_base_html_a0dd784c88433be68c5e3067e72ecf21c"><div class="ttname"><a href="class_handle_base.html#a0dd784c88433be68c5e3067e72ecf21c">HandleBase::operator()</a></div><div class="ttdeci">virtual DWORD operator()()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00203">SockTools.h:203</a></div></div>
<div class="ttc" id="aclass_handle_base_html"><div class="ttname"><a href="class_handle_base.html">HandleBase</a></div><div class="ttdoc">回调函数基类</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00198">SockTools.h:198</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a55967058a645eade8301ded4163b1c0f"><div class="ttname"><a href="_sock_tools_8h.html#a55967058a645eade8301ded4163b1c0f">lpConnectCompleteFunc</a></div><div class="ttdeci">DWORD(* lpConnectCompleteFunc)(CSockError ec, void *invoker)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00183">SockTools.h:183</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_html_a0ce438ae9c21fd43fabae8030ef00e48"><div class="ttname"><a href="class_w_r_addr_handle.html#a0ce438ae9c21fd43fabae8030ef00e48">WRAddrHandle::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00304">SockTools.h:304</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_html"><div class="ttname"><a href="class_a_c_t_handle.html">ACTHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00215">SockTools.h:215</a></div></div>
<div class="ttc" id="aclass_w_r_handle_html_aa1780ec5d66f6e3ea32714a0dcf307e2"><div class="ttname"><a href="class_w_r_handle.html#aa1780ec5d66f6e3ea32714a0dcf307e2">WRHandle::WRHandle</a></div><div class="ttdeci">WRHandle()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00276">SockTools.h:276</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_null_html_a45a2cf65212c16a756b2eb42e2f0c9ee"><div class="ttname"><a href="class_w_r_addr_handle_null.html#a45a2cf65212c16a756b2eb42e2f0c9ee">WRAddrHandleNull::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00316">SockTools.h:316</a></div></div>
<div class="ttc" id="aclass_c_sock_addr_html"><div class="ttname"><a href="class_c_sock_addr.html">CSockAddr</a></div><div class="ttdoc">协议地址结构体</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00043">SockTools.h:43</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_null_html_a0ee535e2c8562b3643fe33fecb414ef7"><div class="ttname"><a href="class_w_r_addr_handle_null.html#a0ee535e2c8562b3643fe33fecb414ef7">WRAddrHandleNull::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00323">SockTools.h:323</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_html"><div class="ttname"><a href="class_w_r_addr_handle.html">WRAddrHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00302">SockTools.h:302</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_ac7875a7f6984241a06892f7041b4d30a"><div class="ttname"><a href="_sock_tools_8h.html#ac7875a7f6984241a06892f7041b4d30a">SOCKIDEN</a></div><div class="ttdeci">DEF_BEG_LIBTOOLS typedef INT64 SOCKIDEN</div><div class="ttdoc">SOCKET唯一标识符ID</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00019">SockTools.h:19</a></div></div>
<div class="ttc" id="atools_8h_html_a201ce692c9dca6599e5c12d00167419b"><div class="ttname"><a href="tools_8h.html#a201ce692c9dca6599e5c12d00167419b">DEF_BEG_LIBTOOLS</a></div><div class="ttdeci">#define DEF_BEG_LIBTOOLS</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00036">tools.h:36</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_null_html_aa249a078d00ba1dfd11499e9160d4fda"><div class="ttname"><a href="class_a_c_t_handle_null.html#aa249a078d00ba1dfd11499e9160d4fda">ACTHandleNull::ACTHandleNull</a></div><div class="ttdeci">ACTHandleNull(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00233">SockTools.h:233</a></div></div>
<div class="ttc" id="aclass_c_sock_addr_html_a3ce3c1d797183bcffe8898ad77249c1e"><div class="ttname"><a href="class_c_sock_addr.html#a3ce3c1d797183bcffe8898ad77249c1e">CSockAddr::_size</a></div><div class="ttdeci">size_t _size</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00138">SockTools.h:138</a></div></div>
<div class="ttc" id="aclass_w_r_handle_html_a8d80555d829aef60b954789c83bae8fc"><div class="ttname"><a href="class_w_r_handle.html#a8d80555d829aef60b954789c83bae8fc">WRHandle::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00281">SockTools.h:281</a></div></div>
<div class="ttc" id="atools_8h_html_a64152c8b939d1ce06c7c5cb6c97b62f8"><div class="ttname"><a href="tools_8h.html#a64152c8b939d1ce06c7c5cb6c97b62f8">LIBTOOLS</a></div><div class="ttdeci">#define LIBTOOLS</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00095">tools.h:95</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html_a5b4449ffcdd56de9bcd090e152aa943d"><div class="ttname"><a href="class_post_handle_null.html#a5b4449ffcdd56de9bcd090e152aa943d">PostHandleNull::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00264">SockTools.h:264</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_html_a3fd60c7ec61d15a6ca1fbe94c20fd12d"><div class="ttname"><a href="class_a_c_t_handle.html#a3fd60c7ec61d15a6ca1fbe94c20fd12d">ACTHandle::ACTHandle</a></div><div class="ttdeci">ACTHandle()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00219">SockTools.h:219</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_html_a19f212183b5907948756a92f6e3363e0"><div class="ttname"><a href="class_w_r_addr_handle.html#a19f212183b5907948756a92f6e3363e0">WRAddrHandle::WRAddrHandle</a></div><div class="ttdeci">WRAddrHandle(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00307">SockTools.h:307</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html_a11022e1697622f60a0b066d05faec075"><div class="ttname"><a href="class_post_handle_null.html#a11022e1697622f60a0b066d05faec075">PostHandleNull::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00257">SockTools.h:257</a></div></div>
<div class="ttc" id="aclass_c_socket_html"><div class="ttname"><a href="class_c_socket.html">CSocket</a></div><div class="ttdoc">套接口类</div><div class="ttdef"><b>Definition:</b> <a href="_socket_8h_source.html#l00030">Socket.h:30</a></div></div>
<div class="ttc" id="aclass_post_handle_html_ab3189131ee766878c26e84fe2e34fcb7"><div class="ttname"><a href="class_post_handle.html#ab3189131ee766878c26e84fe2e34fcb7">PostHandle::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00244">SockTools.h:244</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_html_a52c5b24205b8b3c0e07285560eda1e12"><div class="ttname"><a href="class_a_c_t_handle.html#a52c5b24205b8b3c0e07285560eda1e12">ACTHandle::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00224">SockTools.h:224</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a74bad9070f3dc35adaec8fa382504102"><div class="ttname"><a href="_sock_tools_8h.html#a74bad9070f3dc35adaec8fa382504102">CTcpServiceBase</a></div><div class="ttdeci">class LIBTOOLS CTcpServiceBase</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00022">SockTools.h:22</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_null_html"><div class="ttname"><a href="class_w_r_addr_handle_null.html">WRAddrHandleNull</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00314">SockTools.h:314</a></div></div>
<div class="ttc" id="aclass_w_r_handle_html_a238dc68b18181b941e21d9c608fe5c6f"><div class="ttname"><a href="class_w_r_handle.html#a238dc68b18181b941e21d9c608fe5c6f">WRHandle::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00274">SockTools.h:274</a></div></div>
<div class="ttc" id="a_socket_def_8h_html"><div class="ttname"><a href="_socket_def_8h.html">SocketDef.h</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a19358efe08e40c8fe899cbec837c5d87"><div class="ttname"><a href="_sock_tools_8h.html#a19358efe08e40c8fe899cbec837c5d87">lpPostCompleteFunc</a></div><div class="ttdeci">DWORD(* lpPostCompleteFunc)(void *invoker)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00191">SockTools.h:191</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_afe2675c066a09f87a630836c5f721e40"><div class="ttname"><a href="_sock_tools_8h.html#afe2675c066a09f87a630836c5f721e40">lpAcceptCompleteFunc</a></div><div class="ttdeci">DWORD(* lpAcceptCompleteFunc)(CSockError ec, void *invoker)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00181">SockTools.h:181</a></div></div>
<div class="ttc" id="atools_8h_html_ac909db71799bb22cb7d636a34cd785e4"><div class="ttname"><a href="tools_8h.html#ac909db71799bb22cb7d636a34cd785e4">DEF_END_LIBTOOLS</a></div><div class="ttdeci">#define DEF_END_LIBTOOLS</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00038">tools.h:38</a></div></div>
<div class="ttc" id="aclass_post_handle_html"><div class="ttname"><a href="class_post_handle.html">PostHandle</a></div><div class="ttdoc">用户投递回调</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00242">SockTools.h:242</a></div></div>
<div class="ttc" id="aclass_w_r_handle_html_a130f06b9629816c74dede292184ff5e4"><div class="ttname"><a href="class_w_r_handle.html#a130f06b9629816c74dede292184ff5e4">WRHandle::WRHandle</a></div><div class="ttdeci">WRHandle(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00277">SockTools.h:277</a></div></div>
<div class="ttc" id="aclass_post_handle_html_a74b0d5c53bcd9c85cc1422d74eac8e4a"><div class="ttname"><a href="class_post_handle.html#a74b0d5c53bcd9c85cc1422d74eac8e4a">PostHandle::PostHandle</a></div><div class="ttdeci">PostHandle()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00246">SockTools.h:246</a></div></div>
<div class="ttc" id="a_sock_error_8h_html"><div class="ttname"><a href="_sock_error_8h.html">SockError.h</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_html_ae918d94905bcf0d67f30730d62d68257"><div class="ttname"><a href="class_w_r_addr_handle.html#ae918d94905bcf0d67f30730d62d68257">WRAddrHandle::WRAddrHandle</a></div><div class="ttdeci">WRAddrHandle()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00306">SockTools.h:306</a></div></div>
<div class="ttc" id="aclass_w_r_handle_html"><div class="ttname"><a href="class_w_r_handle.html">WRHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00272">SockTools.h:272</a></div></div>
<div class="ttc" id="atools_8h_html_a798af1e30bc65f319c1a246cecf59e39"><div class="ttname"><a href="tools_8h.html#a798af1e30bc65f319c1a246cecf59e39">DWORD</a></div><div class="ttdeci">unsigned int DWORD</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00134">tools.h:134</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html_abb93e157de5b82956a65c34d9b444f98"><div class="ttname"><a href="class_post_handle_null.html#abb93e157de5b82956a65c34d9b444f98">PostHandleNull::PostHandleNull</a></div><div class="ttdeci">PostHandleNull(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00260">SockTools.h:260</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_html_aa514722b590d01cdfc240f17a700ea28"><div class="ttname"><a href="class_a_c_t_handle.html#aa514722b590d01cdfc240f17a700ea28">ACTHandle::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00217">SockTools.h:217</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a3566b83d923c77ab474018f53eb243fc"><div class="ttname"><a href="_sock_tools_8h.html#a3566b83d923c77ab474018f53eb243fc">GetSockName</a></div><div class="ttdeci">CSockError LIBTOOLS GetSockName(const CSocket &amp;sock, CSockAddr &amp;addr)</div><div class="ttdoc">获取套接口本地名字</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8cpp_source.html#l00077">SockTools.cpp:77</a></div></div>
<div class="ttc" id="atools_8h_html_ab689500aaec0db066e3ac9483d3fe425"><div class="ttname"><a href="tools_8h.html#ab689500aaec0db066e3ac9483d3fe425">NullPtr</a></div><div class="ttdeci">#define NullPtr</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00119">tools.h:119</a></div></div>
<div class="ttc" id="aclass_w_r_handle_null_html"><div class="ttname"><a href="class_w_r_handle_null.html">WRHandleNull</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00284">SockTools.h:284</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_null_html_aa089f429ccdda73074ab2444fea8100b"><div class="ttname"><a href="class_a_c_t_handle_null.html#aa089f429ccdda73074ab2444fea8100b">ACTHandleNull::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00237">SockTools.h:237</a></div></div>
<div class="ttc" id="aclass_w_r_handle_null_html_aa846a077d452c1c7fe323ee9039acc82"><div class="ttname"><a href="class_w_r_handle_null.html#aa846a077d452c1c7fe323ee9039acc82">WRHandleNull::WRHandleNull</a></div><div class="ttdeci">WRHandleNull(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00289">SockTools.h:289</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_html_a80149636170dbb6bc6481af601e6a639"><div class="ttname"><a href="class_w_r_addr_handle.html#a80149636170dbb6bc6481af601e6a639">WRAddrHandle::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00311">SockTools.h:311</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html_abb48007bf0ca9906fbc4b0a8341164e8"><div class="ttname"><a href="class_post_handle_null.html#abb48007bf0ca9906fbc4b0a8341164e8">PostHandleNull::PostHandleNull</a></div><div class="ttdeci">PostHandleNull()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00259">SockTools.h:259</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html"><div class="ttname"><a href="class_post_handle_null.html">PostHandleNull</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00255">SockTools.h:255</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a65db86524d66ff5c871579e2dacf12ca"><div class="ttname"><a href="_sock_tools_8h.html#a65db86524d66ff5c871579e2dacf12ca">lpTimeoutCompleteFunc</a></div><div class="ttdeci">DWORD(* lpTimeoutCompleteFunc)(CSockError ec, void *invoker)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00187">SockTools.h:187</a></div></div>
<div class="ttc" id="aclass_c_sock_addr_html_a24246447eef2dad29eab779f8e2a5e75"><div class="ttname"><a href="class_c_sock_addr.html#a24246447eef2dad29eab779f8e2a5e75">CSockAddr::_addr</a></div><div class="ttdeci">char * _addr</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00137">SockTools.h:137</a></div></div>
<div class="ttc" id="aclass_w_r_handle_null_html_a53e2d4027035f3775511148616922cd2"><div class="ttname"><a href="class_w_r_handle_null.html#a53e2d4027035f3775511148616922cd2">WRHandleNull::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00286">SockTools.h:286</a></div></div>
<div class="ttc" id="aclass_w_r_handle_null_html_a205548c98aa00bb18d8a21306bc7ff8f"><div class="ttname"><a href="class_w_r_handle_null.html#a205548c98aa00bb18d8a21306bc7ff8f">WRHandleNull::WRHandleNull</a></div><div class="ttdeci">WRHandleNull()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00288">SockTools.h:288</a></div></div>
<div class="ttc" id="aclass_post_handle_null_html_a0f2860548a7ca7db00b4a11c82ab3cab"><div class="ttname"><a href="class_post_handle_null.html#a0f2860548a7ca7db00b4a11c82ab3cab">PostHandleNull::operator()</a></div><div class="ttdeci">virtual DWORD operator()()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00261">SockTools.h:261</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_null_html_aaf8dd153ee1d4cbc35c327c4f987cfeb"><div class="ttname"><a href="class_a_c_t_handle_null.html#aaf8dd153ee1d4cbc35c327c4f987cfeb">ACTHandleNull::_handle</a></div><div class="ttdeci">Func _handle</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00230">SockTools.h:230</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a486e36ffbc5ef3ed2987d4c9e9d9baa4"><div class="ttname"><a href="_sock_tools_8h.html#a486e36ffbc5ef3ed2987d4c9e9d9baa4">Bind</a></div><div class="ttdeci">CSockError LIBTOOLS Bind(CSocket &amp;sock, const char *szAddr=NullPtr, DWORD port=-1)</div><div class="ttdoc">绑定套接字端口</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8cpp_source.html#l00033">SockTools.cpp:33</a></div></div>
<div class="ttc" id="aclass_handle_base_html_a676df92072609ebf6fea8483d4e5c498"><div class="ttname"><a href="class_handle_base.html#a676df92072609ebf6fea8483d4e5c498">HandleBase::~HandleBase</a></div><div class="ttdeci">virtual ~HandleBase()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00202">SockTools.h:202</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_aab6ce5ae338e36d66137b8d9ed1ccfa1"><div class="ttname"><a href="_sock_tools_8h.html#aab6ce5ae338e36d66137b8d9ed1ccfa1">HostByteOrder</a></div><div class="ttdeci">unsigned int LIBTOOLS HostByteOrder()</div><div class="ttdoc">判断大端还是小端字节序</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8cpp_source.html#l00015">SockTools.cpp:15</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_null_html"><div class="ttname"><a href="class_a_c_t_handle_null.html">ACTHandleNull</a></div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00228">SockTools.h:228</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_html_a839b7bb42177818149e4233221b22d2e"><div class="ttname"><a href="class_a_c_t_handle.html#a839b7bb42177818149e4233221b22d2e">ACTHandle::ACTHandle</a></div><div class="ttdeci">ACTHandle(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00220">SockTools.h:220</a></div></div>
<div class="ttc" id="anamespace_s_o_c_k_f_a_m_i_l_y_html_a2752d06098f227dbd8340b30a718da81"><div class="ttname"><a href="namespace_s_o_c_k_f_a_m_i_l_y.html#a2752d06098f227dbd8340b30a718da81">SOCKFAMILY::SockFamily</a></div><div class="ttdeci">SockFamily</div><div class="ttdef"><b>Definition:</b> <a href="_socket_def_8h_source.html#l00057">SocketDef.h:57</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a23c9ed857354ad531dd0484d638a6224"><div class="ttname"><a href="_sock_tools_8h.html#a23c9ed857354ad531dd0484d638a6224">SOCKADDR_UN</a></div><div class="ttdeci">sockaddr_un SOCKADDR_UN</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00033">SockTools.h:33</a></div></div>
<div class="ttc" id="aclass_w_r_addr_handle_null_html_a31d61baddaab7af808d2134c7a702f8e"><div class="ttname"><a href="class_w_r_addr_handle_null.html#a31d61baddaab7af808d2134c7a702f8e">WRAddrHandleNull::WRAddrHandleNull</a></div><div class="ttdeci">WRAddrHandleNull(Func func)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00319">SockTools.h:319</a></div></div>
<div class="ttc" id="aclass_a_c_t_handle_null_html_a5ae70a94f931c07e9476653f59313fb0"><div class="ttname"><a href="class_a_c_t_handle_null.html#a5ae70a94f931c07e9476653f59313fb0">ACTHandleNull::ACTHandleNull</a></div><div class="ttdeci">ACTHandleNull()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00232">SockTools.h:232</a></div></div>
<div class="ttc" id="atools_8h_html_afdd49e476b36e84a9d6d171110e79940"><div class="ttname"><a href="tools_8h.html#afdd49e476b36e84a9d6d171110e79940">SOCKADDR</a></div><div class="ttdeci">sockaddr SOCKADDR</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00144">tools.h:144</a></div></div>
<div class="ttc" id="atools_8h_html_a6a2b55a6391419ed0b7b9da06e094b4b"><div class="ttname"><a href="tools_8h.html#a6a2b55a6391419ed0b7b9da06e094b4b">INT64</a></div><div class="ttdeci">long long INT64</div><div class="ttdef"><b>Definition:</b> <a href="tools_8h_source.html#l00132">tools.h:132</a></div></div>
<div class="ttc" id="aclass_post_handle_html_a72490a37adbd17482384be0262024217"><div class="ttname"><a href="class_post_handle.html#a72490a37adbd17482384be0262024217">PostHandle::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00251">SockTools.h:251</a></div></div>
<div class="ttc" id="aclass_w_r_handle_null_html_a139e5b11e76a4214c2bf7cb85b6a4406"><div class="ttname"><a href="class_w_r_handle_null.html#a139e5b11e76a4214c2bf7cb85b6a4406">WRHandleNull::IsNullUserPtr</a></div><div class="ttdeci">virtual bool IsNullUserPtr()</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00293">SockTools.h:293</a></div></div>
<div class="ttc" id="a_sock_tools_8h_html_a099fed87c933c9ed28f3889db6adbfe5"><div class="ttname"><a href="_sock_tools_8h.html#a099fed87c933c9ed28f3889db6adbfe5">lpWRCompleteFunc</a></div><div class="ttdeci">DWORD(* lpWRCompleteFunc)(char *data, DWORD dwSize, CSockError ec, void *invoker)</div><div class="ttdef"><b>Definition:</b> <a href="_sock_tools_8h_source.html#l00185">SockTools.h:185</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>
